package cn.zn.job.service;

import cn.zn.job.entity.SysJob;
import cn.zn.job.vo.SysJobEditVo;
import cn.zn.job.vo.SysJobPageVo;
import com.baomidou.mybatisplus.extension.service.IService;
import org.quartz.SchedulerException;

/**
 * <p>
 * 服务类
 * </p>
 *
 * @author zn-admin
 * @since 2021-01-29
 */
public interface SysJobService extends IService<SysJob> {

    /**
     * 获取quartz调度器的计划任务
     *
     * @param vo 调度信息
     * @return 调度任务集合
     */
    Object selectJobList(SysJobPageVo vo);

    /**
     * 通过调度任务ID查询调度信息
     *
     * @param jobId 调度任务ID
     * @return 调度任务对象信息
     */
    SysJob selectJobById(String jobId);

    /**
     * 批量删除调度信息
     *
     * @param jobIds 需要删除的任务ID
     */
    void deleteJob(String[] jobIds) throws SchedulerException;

    /**
     * 任务调度状态修改
     *
     * @param jobId 调度信息
     */
    void changeStatus(String jobId, SysJobEditVo vo) throws SchedulerException;

    /**
     * 立即运行任务
     *
     * @param jobId 调度信息
     */
    void run(String jobId) throws SchedulerException;

    /**
     * 新增任务
     *
     * @param vo 调度信息
     */
    void insertJob(SysJobEditVo vo) throws SchedulerException, Exception;

    /**
     * 更新任务
     *
     * @param vo 调度信息
     */
    void updateJob(String id, SysJobEditVo vo) throws SchedulerException;

}
